Apache Tapestry একটি শক্তিশালী Inversion of Control (IoC) কন্টেইনার সরবরাহ করে, যা ডেভেলপারদের জন্য অ্যাপ্লিকেশন সার্ভিসগুলিকে সহজে তৈরি, কনফিগার এবং পরিচালনা করতে সহায়তা করে। Tapestry এর Service Layer মূলত বিভিন্ন সার্ভিস এবং ডিপেন্ডেন্সি ইঞ্জেকশনের মাধ্যমে অ্যাপ্লিকেশনের কার্যকারিতা ম্যানেজ করে।
এই টিউটোরিয়ালে, আমরা দেখব কিভাবে Tapestry তে custom services তৈরি করতে হয় এবং তা কিভাবে IoC কন্টেইনারে নিবন্ধিত (register) করতে হয়।
Tapestry তে কাস্টম সার্ভিস তৈরি করার জন্য আপনাকে কিছু নির্দিষ্ট পদক্ষেপ অনুসরণ করতে হবে। নিচে ধাপে ধাপে কাস্টম সার্ভিস তৈরি করার প্রক্রিয়া ব্যাখ্যা করা হলো।
প্রথমে, একটি Java ক্লাস তৈরি করুন যা আপনার সার্ভিসের লজিক ধারণ করবে। এটি সাধারনত service layer-এর অংশ হিসেবে কাজ করবে।
উদাহরণস্বরূপ, একটি UserService
তৈরি করা হল, যা ব্যবহারকারীর তথ্য প্রসেস করবে।
UserService.java:
package com.example.services;
public class UserService {
public String getUserInfo(String username) {
// সাধারন লজিক যা ব্যবহারকারীর তথ্য ফেরত দেয়
return "User Info for: " + username;
}
}
এটি একটি সাধারণ UserService
ক্লাস যা ব্যবহারকারীর তথ্য ফেরত দেয়।
আপনার কাস্টম সার্ভিসকে Tapestry এর IoC (Inversion of Control) কন্টেইনার এ নিবন্ধন করতে হবে। এটি সাধারণত AppModule ক্লাসে করা হয়, যেখানে সার্ভিসের binding বা configuration করা হয়।
AppModule.java:
package com.example.services;
import org.apache.tapestry5.ioc.ServiceBinder;
public class AppModule {
// Service registration
public static void bind(ServiceBinder binder) {
binder.bind(UserService.class, UserService.class);
}
}
এখানে, binder.bind(UserService.class, UserService.class)
এর মাধ্যমে UserService
ক্লাসটিকে Tapestry এর IoC কন্টেইনারে নিবন্ধিত (bind) করা হচ্ছে। এটি Tapestry এর সার্ভিস কন্টেইনারে UserService
কে উপলব্ধ করে দেয়, যাতে আপনি যেকোনো জায়গা থেকে এই সার্ভিসটি ইনজেক্ট করতে পারেন।
একবার সার্ভিসটি নিবন্ধিত হলে, আপনি এটি Tapestry পেজ বা কম্পোনেন্টে ইনজেক্ট করতে পারেন এবং সার্ভিসের মেথড ব্যবহার করতে পারেন। Tapestry ইনজেকশন পরিচালনার জন্য @Inject
অ্যানোটেশন ব্যবহার করে।
UserPage.java (পেজ ক্লাসে সার্ভিস ইনজেকশন):
package com.example.pages;
import com.example.services.UserService;
import org.apache.tapestry5.annotations.Inject;
public class UserPage {
@Inject
private UserService userService; // সার্ভিস ইনজেক্ট করা হয়েছে
private String username;
// এই মেথডটি ব্যবহারকারীর ইনফো ফেচ করতে কাজ করবে
public String getUserInfo() {
return userService.getUserInfo(username); // সার্ভিসের মেথড কল
}
public void setUsername(String username) {
this.username = username;
}
}
এখানে:
@Inject
অ্যানোটেশন ব্যবহার করে UserService ইনজেক্ট করা হয়েছে।getUserInfo()
মেথডে UserService
এর getUserInfo()
মেথড কল করা হচ্ছে।এখন, Tapestry পেজে আপনি এই সার্ভিসের মাধ্যমে ব্যবহারকারীর ইনফো ফেচ করতে পারবেন। নিচে UserPage
পেজের HTML টেমপ্লেট দেওয়া হলো:
userpage.tml (HTML টেমপ্লেট):
<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_3.xsd">
<head>
<title>User Info Page</title>
</head>
<body>
<h2>Welcome to User Info Page</h2>
<t:form t:id="userForm">
<t:label value="Username" for="username" />
<t:textfield t:id="username" value="username" />
<t:button t:id="fetchButton" value="Fetch User Info" />
</t:form>
<h3>User Info:</h3>
<p>${userInfo}</p>
</body>
</html>
এখানে, username
ইনপুট ফিল্ড থেকে ডেটা নেয়া হবে এবং userInfo
ভ্যারিয়েবল ব্যবহারকারীর তথ্য প্রদর্শন করবে, যা সার্ভিসের মাধ্যমে ফেচ করা হবে।
UserPage.java মেথডে, আমরা onSubmit
মেথডে ইনপুট তথ্য প্রক্রিয়া করব:
public void onSubmitFromUserForm() {
userInfo = userService.getUserInfo(username); // সার্ভিস কল এবং ইনফো পাওয়ার জন্য
}
এখানে:
Tapestry ফ্রেমওয়ার্কে custom services তৈরি করা এবং IoC (Inversion of Control) কন্টেইনারে সেগুলিকে নিবন্ধিত করা খুবই সহজ। AppModule ক্লাসে সার্ভিস নিবন্ধন, সার্ভিস ক্লাস তৈরি এবং @Inject অ্যানোটেশন দিয়ে সার্ভিস ইনজেকশন ব্যবহারের মাধ্যমে আপনি দ্রুত সেবা প্রদানকারী কার্যক্রম তৈরি করতে পারেন। Tapestry এর IoC কন্টেইনার আপনার সার্ভিস গুলি পরিচালনা করে এবং ডিপেন্ডেন্সি ম্যানেজমেন্ট সহজ করে তোলে।
Read more